// Clase que define un material

#ifndef MATERIAL_H_
#define MATERIAL_H_

#include "Color.h"

class Material
{
private:
	// Color de ambiente propio del objeto
	Color mAmbientColor;

	// Color difuso propiio del objeto
	Color mDiffuseColor;

	// Color especular propio del objeto
	Color mSpecularColor;

	// Factor de brillo del objeto
	float mShininess;

public:
	Material();
	~Material();

	// Da o establece el color de ambiente
	Color& GetAmbientColor(){ return mAmbientColor; }
	void SetAmbientColor(float r, float g, float b, float a=1){ mAmbientColor.SetColor(r, g, b, a); }

	// Da o establece el color difuso
	Color& GetDiffuseColor(){ return mDiffuseColor; }
	void SetDiffuseColor(float r, float g, float b, float a=1){ mDiffuseColor.SetColor(r, g, b, a); }

	// Da o establece el color especular
	Color& GetSpecularColor(){ return mSpecularColor; }
	void SetSpecularColor(float r, float g, float b, float a=1){ mSpecularColor.SetColor(r, g, b, a); }

	// Da o establece el brillo
	const float GetShininess() const { return mShininess; }
	void SetShininess(float val){ mShininess = val; }
};

#endif // MATERIAL_H_